package com.vcit.system.service;

import com.vcit.system.domain.SysNotice;
import com.vcit.system.domain.clazz.TClazzStudent;
import com.vcit.system.domain.vo.ClazzResultVO;
import com.vcit.system.domain.vo.StudentListVo;

import java.io.IOException;
import java.util.List;


/**
 * 班级学生关系Service接口
 * 
 * @author dff
 * @date 2025-01-17
 */
public interface ITClazzStudentService 
{
    /**
     * 通过学生id获取学生分班结果
     * @param studentId
     * @return
     */
    ClazzResultVO getClazzResult(Long studentId);

    /**
     * 通过学生id，生成学生报道卡
     * @param studentId
     * @return
     */
    byte[] generateReportCard(Long studentId) throws IOException;
    /**
     * 查询班级学生关系
     * 
     * @param id 班级学生关系主键
     * @return 班级学生关系
     */
    public TClazzStudent selectTClazzStudentById(Long id);

    /**
     * 查询班级学生关系列表
     * 
     * @param tClazzStudent 班级学生关系
     * @return 班级学生关系集合
     */
    public List<TClazzStudent> selectTClazzStudentList(TClazzStudent tClazzStudent);

    /**
     * 新增班级学生关系
     * 
     * @param tClazzStudent 班级学生关系
     * @return 结果
     */
    public int insertTClazzStudent(TClazzStudent tClazzStudent);

    /**
     * 修改班级学生关系
     * 
     * @param tClazzStudent 班级学生关系
     * @return 结果
     */
    public int updateTClazzStudent(TClazzStudent tClazzStudent);

    /**
     * 批量删除班级学生关系
     * 
     * @param ids 需要删除的班级学生关系主键集合
     * @return 结果
     */
    public int deleteTClazzStudentByIds(Long[] ids);

    /**
     * 删除班级学生关系信息
     * 
     * @param id 班级学生关系主键
     * @return 结果
     */
    public int deleteTClazzStudentById(Long id);

    /**
     * 获取学生分班结果通知时间
     *
     * @param student
     * @param noticeType
     * @return
     */
    SysNotice getClazzResultNoticeDate(StudentListVo student, String noticeType);
}
